package responsiblechain;

import java.math.BigDecimal;

/**
 * 假设某个员工需要报销一笔费用，审核者可以分为：
 *
 * Manager：只能审核10元以下的报销；
 * Director：只能审核100元以下的报销；
 * CEO：可以审核任意额度。
 */
public class Test {
    public static void main(String[] args) {
        // 构造责任链:
        HandlerChain chain = new HandlerChain();
        chain.addHandler(new ManagerHandler());
        chain.addHandler(new DirectorHandler());
        chain.addHandler(new CEOHandler());
        // 处理请求:
        chain.process(new Request("Bob", new BigDecimal("1.2345")));
        chain.process(new Request("Alice", new BigDecimal("12.3456")));
        chain.process(new Request("Bill", new BigDecimal("123.4567")));
        chain.process(new Request("John", new BigDecimal("1234.5678")));
    }
}